package org.scohen.juploadr.app;

import java.util.List;


public interface PhotoSet extends Comparable<PhotoSet> {

    /**
     * @return Returns the description.
     */
    public abstract String getDescription();

    /**
     * @param description
     *            The description to set.
     */
    public abstract void setDescription(String description);

    /**
     * @return Returns the id.
     */
    public abstract String getId();

    /**
     * @param id
     *            The id to set.
     */
    public abstract void setId(String id);

    /**
     * @return Returns the numberOfPhotos.
     */
    public abstract int getNumberOfPhotos();

    /**
     * @param numberOfPhotos
     *            The numberOfPhotos to set.
     */
    public abstract void setNumberOfPhotos(int numberOfPhotos);

    /**
     * @return Returns the secret.
     */
    public abstract String getSecret();

    /**
     * @param secret
     *            The secret to set.
     */
    public abstract void setSecret(String secret);

    /**
     * @return Returns the server.
     */
    public abstract String getServer();

    /**
     * @param server
     *            The server to set.
     */
    public abstract void setServer(String server);

    /**
     * @return Returns the title.
     */
    public abstract String getTitle();

    /**
     * @param title
     *            The title to set.
     */
    public abstract void setTitle(String title);

    /*
     * (non-Javadoc)
     * 
     * @see java.lang.Object#equals(java.lang.Object)
     */
    public abstract boolean equals(Object o);

    /**
     * @return Returns the new.
     */
    public abstract boolean isNew();

    /**
     * @param new1
     *            The new to set.
     */
    public abstract void setNew(boolean new1);

    /**
     * @return Returns the primaryPhoto.
     */
    public abstract ImageAttributes getPrimaryPhoto();

    /**
     * @param primaryPhoto
     *            The primaryPhoto to set.
     */
    public abstract void setPrimaryPhoto(ImageAttributes primaryPhoto);

    /**
     * @return Returns the primaryPhotoId.
     */
    public abstract String getPrimaryPhotoId();

    /**
     * @param primaryPhotoId
     *            The primaryPhotoId to set.
     */
    public abstract void setPrimaryPhotoId(String primaryPhotoId);

    public abstract List<ImageAttributes> getPhotos();

    public abstract void addPhoto(ImageAttributes atts);

    public abstract void removePhoto(ImageAttributes atts);

    /**
     * @return Returns the url.
     */
    public abstract String getUrl();

    /**
     * @param url
     *            The url to set.
     */
    public abstract void setUrl(String url);
    
    /**
     * Returns whether or not this set contains the photo specified.
     * @param photo
     * @return
     */
    public abstract boolean hasPhoto(ImageAttributes photo);

}